home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / PROBLEMS / BENCHMARK / BUBBLESORT / bubbletest / assembler2 / source < prev    next >
Text File  |  1992-06-17  |  3KB  |  145 lines

  1.  .ABSOLUTE
  2.  .PROC formula      
  3.  
  4.  ; bubbletest.assembler.needed is FREEWARE, you may not sell it
  5.  .INCLUDE <bubble_assembler$dir>.needed
  6.  
  7.  .MACRO bubblesort formularesult,a,length
  8.  
  9.    LDR R9,[stackregister,#%2]
  10.    ; array
  11.    LDR R10,[stackregister,#%3]
  12.    ; length
  13.    MOV R10,R10,LSL#2
  14.    ADD R10,R10,R9
  15.    ; end address
  16. \whileloop
  17.    MOV R0,#1
  18.    MOV R1,R9
  19.    LDR R2,[R1],#4
  20. \forloop
  21.    LDR R3,[R1],#4
  22.    CMP R2,R3
  23.    STRGT R2,[R1,#-4]
  24.    STRGT R3,[R1,#-8]
  25.    MOVGT R0,#0
  26.    MOVLS R2,R3
  27.    TEQ R1,R10
  28.    BNE \forloop
  29.    TEQ R0,#1
  30.    BNE \whileloop
  31.  
  32.  .ENDM
  33.  
  34.  restoreregister
  35.  goto jump
  36.  
  37.  DEFSTORE a,formula_one*1000.*4.,0
  38.     
  39. jump
  40.  
  41.   saveregister
  42.   STRINGconstload R1,'*wimpslot -min 7K -max 7K'
  43.   CHARPTRstackstore [stackregister,#16.],R1
  44.   STACKadd stackregister,stackregister,20.
  45.   system R0,-4.
  46.   STACKsub stackregister,stackregister,20.
  47.  
  48.   INTconstload R1,123456.
  49.   INTregstore R0,R1
  50.   INTconstload R2,0.
  51.   INTregstore R1,R2
  52.   goto for2label4
  53. forlabel4
  54.   INTconstload R2,1.
  55.   INTsum R2,R1,R2
  56.   INTregstore R1,R2
  57. for2label4
  58.   INTconstload R2,1000.
  59.   INTless R2,R1,R2
  60.   ifnotgoto endforlabel4,R2
  61.       INTconstload R2,234567.
  62.       INTsum R2,R0,R2
  63.       INTconstload R3,567.
  64.       INTmodulo R2,R2,R3
  65.       INTconstload R3,345.
  66.       INTsum R2,R2,R3
  67.       INTregstore R0,R2
  68.       INTregstore R3,R1
  69.       INTconstmult R3,4
  70.       INTPTRconstload R4,a
  71.       INTsum R3,R3,R4
  72.       INTarraystore R3,R0
  73.       INTregstore R3,R1
  74.       INTconstmult R3,4
  75.       INTPTRconstload R4,a
  76.       INTsum R3,R3,R4
  77.       INTarrayload R3,R3
  78.       STMIA R12,{R0,R1,R3}
  79.       INTstackstore [stackregister,#28.],R3
  80.       STACKadd stackregister,stackregister,32.
  81.       writeint R2,-4.
  82.       STACKsub stackregister,stackregister,32.
  83.       LDMFD R12,{R0,R1,R3}
  84.       restoreregister
  85.      cr
  86.   saveregister
  87.   goto forlabel4
  88. endforlabel4
  89.  
  90.   STMIA R12,{R0,R1}
  91.   STRINGconstload R3,'show time1'
  92.   CHARPTRstackstore [stackregister,#24.],R3
  93.   STACKadd stackregister,stackregister,28.
  94.   system R2,-4.
  95.   STACKsub stackregister,stackregister,28.
  96.   LDMFD R12,{R0,R1}
  97.   STMIA R12,{R0,R1}
  98.   INTconstload R3,1000.
  99.   INTstackstore [stackregister,#24.],R3
  100.   INTPTRconstload R3,a
  101.   INTPTRstackstore [stackregister,#28.],R3
  102.   STACKadd stackregister,stackregister,32.
  103.   bubblesort R2,-4.,-8.
  104.   STACKsub stackregister,stackregister,32.
  105.   LDMFD R12,{R0,R1}
  106.   STMIA R12,{R0,R1}
  107.   STRINGconstload R3,'show time1'
  108.   CHARPTRstackstore [stackregister,#24.],R3
  109.   STACKadd stackregister,stackregister,28.
  110.   system R2,-4.
  111.   STACKsub stackregister,stackregister,28.
  112.   LDMFD R12,{R0,R1}
  113.  
  114.   INTconstload R2,0.
  115.   INTregstore R1,R2
  116.   goto for2label5
  117. forlabel5
  118.   INTconstload R2,1.
  119.   INTsum R2,R1,R2
  120.   INTregstore R1,R2
  121. for2label5
  122.   INTconstload R2,1000.
  123.   INTless R2,R1,R2
  124.   ifnotgoto endforlabel5,R2
  125.       INTregstore R3,R1
  126.       INTconstmult R3,4
  127.       INTPTRconstload R4,a
  128.       INTsum R3,R3,R4
  129.       INTarrayload R3,R3
  130.       STMIA R12,{R0,R1,R3}
  131.       INTstackstore [stackregister,#28.],R3
  132.       STACKadd stackregister,stackregister,32.
  133.       writeint R2,-4.
  134.       STACKsub stackregister,stackregister,32.
  135.       LDMFD R12,{R0,R1,R3}
  136.       restoreregister
  137.      cr
  138.   saveregister
  139.   goto forlabel5
  140. endforlabel5
  141.   restoreregister
  142.   SWI XOS_Exit
  143.  .END
  144.  
  145.